package org.example.demo1startjava17.designPattern.bCreationalPatterns.b2AbstractFactoryPattern;

import java.lang.reflect.InvocationTargetException;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.TimeZone;

/**
 * 抽象工厂模式（Abstract Factory Pattern）是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式，它提供了一种创建对象的最佳方式。
 * 在抽象工厂模式中，接口是负责创建一个相关对象的工厂，不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
 * 抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口，而无需指定具体实现类。通过使用抽象工厂模式，可以将客户端与具体产品的创建过程解耦，使得客户端可以通过工厂接口来创建一族产品。
 *
 *
 * @author admin
 * @date 2024/05/30 10:51
 */
public class B2AbstractFactoryPattern {

//    java.util.Calendar
//    ResourceBundle and NumberFormat getInstance()
    public static void main(String[] args) {

    }

    public static void test1() {

        Calendar build = new Calendar.Builder()
                .setLocale(Locale.CHINA)
                .setTimeZone(TimeZone.getTimeZone("GMT+8:00"))
                .setInstant(System.currentTimeMillis())
                .build();

        Calendar instance = Calendar.getInstance(TimeZone.getTimeZone("GMT+8:00"));

        ResourceBundle bundle = ResourceBundle.getBundle("");

        NumberFormat instance1 = NumberFormat.getInstance();

        Boolean aTrue = Boolean.valueOf("true");

        Integer i = Integer.valueOf("1");

        try {
            String s = String.class.getDeclaredConstructor().newInstance();
        } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            throw new RuntimeException(e);
        }
    }

}
